package com.study.io.bio.demo.input;

import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.List;

/**
 * 对象输入流
 * 对象必须继承序列化接口
 *
 * @author wuxj
 */
public class ObjectInputStreamDemo {
    public static void main(String[] args) throws Exception {

        //FileInputStream 类从文件系统中的一个文件中获取输入字节。
        FileInputStream fin = new FileInputStream("d://123.txt");
        //创建从指定 InputStream 读取的 ObjectInputStream。从流读取序列化头部并予以验证。
        ObjectInputStream ois = new ObjectInputStream(fin);
        //readObject 方法为类重写默认的反序列化
        //readObject 方法用于从流读取对象。应该使用 Java 的安全强制转换来获取所需的类型。
        //在 Java 中，字符串和数组都是对象，所以在序列化期间将其视为对象。读取时，需要将其强制转换为期望的类型。
        List<String> l = (List<String>) ois.readObject();
        for (String s : l) {
            System.out.println(s);
        }

        // 关闭流
        ois.close();
        fin.close();
    }
}
